package com.dc.designPattern._14_visitor.impl;

import lombok.Data;

import java.util.Random;

/**
 * Description: 访问者_数据元素(接口或抽象类)_员工基类
 *
 *  -Element：
 *  元素接口或者抽象类，它定义了一个接受访问者（accept）的方法，其意义是指每一个元素都要可以被访问者访问。
 *
 * @author: gdc
 * @date: 2021/5/13
 * @version 1.0
 */
@Data
public abstract class Staff {

    /**
     * 员工名称
     */
    private String name;
    /**
     * 员工KPI
     */
    private Integer kpi;

    Staff(String name) {
        this.name = name;
        this.kpi = new Random().nextInt(10);
    }

    /**
     * 核心方法，接受访问者的访问
     * @param visitor               访问者
     */
    public abstract void accept(Visitor visitor);
}
